/**
 * 用户相关API
 * 处理用户认证、注册和个人资料管理
 */

import { post, get, put } from './api.js';

/**
 * 用户注册
 * @param {Object} registerData - 注册数据
 * @param {string} registerData.username - 用户名（3-20字符）
 * @param {string} registerData.password - 密码（6-20字符）
 * @param {string} registerData.gradeLevel - 学段（primary/middle/high）
 * @returns {Promise<Object>} 注册结果 { success, data: { token, user }, message }
 */
export const register = async (registerData) => {
  try {
    const response = await post('/users/register', registerData);
    return response;
  } catch (error) {
    // 统一错误格式
    throw {
      success: false,
      message: error.message || '注册失败',
      type: error.type || 'REGISTER_ERROR',
    };
  }
};

/**
 * 用户登录
 * @param {Object} credentials - 登录凭证
 * @param {string} credentials.username - 用户名
 * @param {string} credentials.password - 密码
 * @returns {Promise<Object>} 登录结果 { success, data: { token, user }, message }
 */
export const login = async (credentials) => {
  try {
    const response = await post('/users/login', credentials);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '登录失败',
      type: error.type || 'LOGIN_ERROR',
    };
  }
};

/**
 * 获取用户资料
 * @returns {Promise<Object>} 用户信息 { success, data: { user }, message }
 */
export const getProfile = async () => {
  try {
    const response = await get('/users/profile');
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '获取用户信息失败',
      type: error.type || 'PROFILE_ERROR',
    };
  }
};

/**
 * 更新用户资料
 * @param {Object} updates - 要更新的字段
 * @param {string} [updates.gradeLevel] - 学段
 * @param {string} [updates.password] - 新密码（可选）
 * @returns {Promise<Object>} 更新后的用户信息 { success, data: { user }, message }
 */
export const updateProfile = async (updates) => {
  try {
    const response = await put('/users/profile', updates);
    return response;
  } catch (error) {
    throw {
      success: false,
      message: error.message || '更新用户信息失败',
      type: error.type || 'UPDATE_PROFILE_ERROR',
    };
  }
};

// 导出所有API方法
export default {
  register,
  login,
  getProfile,
  updateProfile,
};

